Some outstanding bug fixes found in VT merge
authordjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Thu, 13 Oct 2005 20:24:45 +0000 (14:24 -0600)
committerdjm@kirby.fc.hp.com <djm@kirby.fc.hp.com>
Thu, 13 Oct 2005 20:24:45 +0000 (14:24 -0600)
commit4284a039387c3509320e9265bf800ae551fb32b7
tree3d197283e3ad157919806be9ef4888717a2211fe
parent65cd10c6b43e4f4037fe089d704f4942a82192a5
Some outstanding bug fixes found in VT merge

- Consistence of region id mangling algrithm:
    - Metaphysical RID is not mangled, which may conflict with other
    domain's virtual RID
    - Sometimes rr0 is mangled, but sometimes not
    - Sometimes only rid value is saved to saved_rr0_metaphysical, but
    sometimes the whole value.

- Nat bit comsumption happens but handled as priv_emulate to forward progress.
But this is definitely wrong. We found reason of nat consumption from fast_rfi,
which doesn't save unat again after spill guest states, and then use guest
unat to fill guest states when return.

- In some corner case, timer interrupt handler won't update itm and then return
directly. When that happens, machine timer interrupt disappears until guest
timer interrupt sets v_itm actively. But vti domain depends on ac_timer while
the latter will stop when above condition happens. Then if current context is
vti domain, context switch disappears and machine halt.

Also many compatibility issues to support non-vti and vti domain are solved,eg:
- Changing lazy PAL mapping switch to eager switch per domain switch, since
vti domain always depends on pal call.
- evtchn_notify should also vcpu_wake target domain, since vti domain may block for io emulation. Xenolinux is free of this issue, since it's always runnable.

Signed-off-by Kevin Tian <kevin.tian@intel.com>
Signed-off-by Anthony Xu <anthony.xu@intel.com>
29 files changed:
xen/Rules.mk
xen/arch/ia64/Rules.mk
xen/arch/ia64/asm-offsets.c
xen/arch/ia64/linux-xen/entry.S
xen/arch/ia64/vmx/vmx_entry.S
xen/arch/ia64/vmx/vmx_init.c
xen/arch/ia64/vmx/vmx_irq_ia64.c
xen/arch/ia64/vmx/vmx_process.c
xen/arch/ia64/vmx/vmx_support.c
xen/arch/ia64/vmx/vtlb.c
xen/arch/ia64/xen/dom0_ops.c
xen/arch/ia64/xen/dom_fw.c
xen/arch/ia64/xen/domain.c
xen/arch/ia64/xen/hyperprivop.S
xen/arch/ia64/xen/ivt.S
xen/arch/ia64/xen/process.c
xen/arch/ia64/xen/regionreg.c
xen/arch/ia64/xen/vcpu.c
xen/arch/ia64/xen/xenasm.S
xen/arch/ia64/xen/xenmisc.c
xen/arch/ia64/xen/xentime.c
xen/include/asm-ia64/config.h
xen/include/asm-ia64/event.h
xen/include/asm-ia64/mm.h
xen/include/asm-ia64/vmx.h
xen/include/asm-ia64/xenkregs.h
xen/include/public/arch-ia64.h
xen/include/public/io/ioreq.h
xen/include/public/io/vmx_vlapic.h